package jp.co.toshiba.ffsa.service.cses;

import jp.co.toshiba.ffsa.entity.Price;

import org.seasar.extension.jdbc.JdbcManager;
import org.seasar.extension.jdbc.where.SimpleWhere;
import org.seasar.framework.container.SingletonS2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
import org.seasar.struts.util.MessageResourcesUtil;


/**
 * 簡易(最小入力)ビジネスロジック
 * @author npc
 */
public class Cses101Service {
    private String fpgaMaker = "";
    private String fpgaSeries = "";
    private String fpgaModel = "";
    private String pkgType = "";
    private String quantity = "";
    private String price = "";
    private String contactMessage = "";

    /**
     * FPGAメーカー名をセットする
     * @param fpgaMaker
     */
    public void setFpgaMaker(String fpgaMaker){this.fpgaMaker = fpgaMaker;}

    /**
     * FPGAシリーズ名をセットする
     * @param fpgaSeries
     */
    public void setFpgaSeries(String fpgaSeries){this.fpgaSeries = fpgaSeries;}

    /**
     * FPGA型名をセットする
     * @param fpgaModel
     */
    public void setFpgaModel(String fpgaModel){this.fpgaModel = fpgaModel;}

    /**
     * PKG-typeをセットする
     * @param pkgType
     */
    public void setPkgType(String pkgType){this.pkgType = pkgType;}

    /**
     * 数量をセットする
     * @param quantity
     */
    public void setQuantity(String quantity){this.quantity = quantity;}

    /**
     * 価格を取得する
     * @return 価格
     * @throws Exception
     */
    public String getPrice() throws Exception {

        // S2Container初期化
        SingletonS2ContainerFactory.init();

        // S2ContainerからJdbcManagerを取得
        JdbcManager jdbcManager = SingletonS2Container.getComponent(JdbcManager.class);

        try{
            // 検索条件
            SimpleWhere swh = new SimpleWhere().eq("fpgaMaker", this.fpgaMaker)
                    .eq("fpgaSeries", this.fpgaSeries)
                    .eq("fpgaModel", this.fpgaModel)
                    .eq("pkgType", this.pkgType)
                    .eq("deleteFlag", "0")
                    ;

            // 価格情報取得
            Price priceList = jdbcManager.from(Price.class)
                    .where(swh)
                    .getSingleResult()
                    ;

            // データが取得できなかった場合
            if(priceList == null){
                this.price = "";
                this.contactMessage = "Contact us";
                return price;
            }

            // データが取得できた場合
            // Quantityによって取得する価格を変える
            if(("1").equals(this.quantity)){
                this.price = priceList.price5k;
            }else if(("2").equals(this.quantity)){
                this.price = priceList.price10k;
            }else if(("3").equals(this.quantity)){
                this.price = priceList.price20k;
            }else if(("4").equals(this.quantity)){
                this.price = priceList.price50k;
            }else if(("5").equals(this.quantity)){
                this.price = priceList.price100k;
            }else if(("6").equals(this.quantity)){
                this.price = priceList.price200k;
            }else if(("7").equals(this.quantity)){
                this.price = priceList.price200kPlus;
            }

            // 価格が"-"の場合は"Contact us"をセットする
            if(("-").equals(this.price) || ("").equals(this.price)){
                this.contactMessage = MessageResourcesUtil.getMessage("cses101.020");
                return "";
            }

            if("ContactUs".equals(this.price)){
                this.contactMessage = "Contact us";
                return "";
            }

            return price;

        }catch(Exception e){
            throw e;
        }
    }

    public String getContactMessage() {
        return contactMessage;
    }

}